#include "wx/wxprec.h"
#if wxUSE_NOTEBOOK

#include "wx/notebook.h"

// ============================================================================
// implementation
// ============================================================================

// ----------------------------------------------------------------------------
// geometry
// ----------------------------------------------------------------------------

wxSize wxNotebookBase::CalcSizeFromPage( const wxSize& sizePage ) const {
  // this is, of course, totally bogus -- but we must do something by
  // default because not all ports implement this
  wxSize sizeTotal = sizePage;
  if( HasFlag( wxBK_LEFT ) || HasFlag( wxBK_RIGHT ) ) {
    sizeTotal.x += 90;
    sizeTotal.y += 10;
  } else { // tabs on top/bottom side
    sizeTotal.x += 10;
    sizeTotal.y += 40;
  }
  return sizeTotal;
}

// ----------------------------------------------------------------------------
// events
// ----------------------------------------------------------------------------

bool wxNotebookBase::SendPageChangingEvent( int nPage ) {
  wxNotebookEvent event( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, GetId() );
  event.SetSelection( nPage );
  event.SetOldSelection( GetSelection() );
  event.SetEventObject( this );
  return !GetEventHandler()->ProcessEvent( event ) || event.IsAllowed();
}

void wxNotebookBase::SendPageChangedEvent( int nPageOld, int nPageNew ) {
  wxNotebookEvent event( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, GetId() );
  event.SetSelection( nPageNew == -1 ? GetSelection() : nPageNew );
  event.SetOldSelection( nPageOld );
  event.SetEventObject( this );
  GetEventHandler()->ProcessEvent( event );
}

#endif // wxUSE_NOTEBOOK
